package model;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import domein.Genodigde;
import domein.Genodigden;

public class GenodigdenIO extends DbAbstract {

	public GenodigdenIO() {
		super();
	}

	/*
	 * 
	 * Lijst genodigden ophalen met parameter vanuit zoekveld
	 * @author warddenouden
	 */

	public ArrayList<Genodigden> SearchListGenodigden(String value, String eventID) {
		ArrayList<Genodigden> genList = new ArrayList<Genodigden>();
		if (value.equals("geaccepteerd")){ value = "1";} 
		else if (value.equals("afwachtend")){ value = "3";} 
		else if (value.equals("afgewezen")){ value = "2";} 
		try {
			super.makeConnection();
			
			ResultSet rs = super.makeResultSet("select * from genodigden INNER JOIN bezoek ON genodigden.email=bezoek.email AND bezoek.eventID='"+eventID+"' where  bezoek.eventID='"+eventID+"' and  naam like '%"+value+"%'OR contactpersoon like '%"+value+"%' OR status like '%"+value+"%' ORDER BY status DESC"); 
			while(rs.next()){
				String id = rs.getString("id");
				String naam = rs.getString("naam");
				String organisatie = rs.getString("organisatie");
				String email = rs.getString("email");
				String telefoonnummer = rs.getString("telefoonnummer");
				String contactpersoon = rs.getString("contactpersoon");
				String status = rs.getString("status");
				
				Genodigden g = new Genodigden(id, naam, organisatie, email, telefoonnummer, contactpersoon, status);
				genList.add(g);
			}
		} catch (SQLException ex) {
			System.out.println("Lijst evenementen ophalen gefaald.");
			ex.printStackTrace();
		}
		super.closeConnectRst();
		return genList; 
	}
	
	/*
	 * 
	 * Lijst met alle genodigden ophalen
	 * @author kevinwtenweerde
	 * 
	 */
	
	public ArrayList<Genodigden> listGenodigden() {
		ArrayList<Genodigden> gList = new ArrayList<Genodigden>();
		try {
			super.makeConnection();
			ResultSet rs = super.makeResultSet("SELECT * FROM genodigden");
			while (rs.next()) {
				Genodigden g = new Genodigden("","", "", "", "", "",""); 
				g.setId(rs.getString("id"));
				g.setNaam(rs.getString("naam"));
				g.setEmail(rs.getString("email"));
				g.setOrganisatie(rs.getString("organisatie"));
				g.setTelefoonnummer(rs.getString("telefoonnummer"));
				g.setContactpersoon(rs.getString("contactpersoon")); 
				gList.add(g);
			}
		} catch (SQLException ex) {
			System.out.println("Lijst genodigden ophalen gefaald.");
		}
		super.closeConnectRst();
		return gList;
	}
	
	/*
	 * 
	 * Lijst met bepaalde genodigden ophalen
	 * @author RubenHartong
	 * 
	 */
	
	public ArrayList<Genodigden> listGenodigden_richting1(String r1, String r2, String r3, String r4, String r5, String eventID) {
		ArrayList<Genodigden> gList = new ArrayList<Genodigden>();
		try {
			super.makeConnection();
			
				ResultSet rs = super.makeResultSet("SELECT * FROM genodigden WHERE richting='"+r1+"' OR richting='"+r2+"' OR richting='"+r3+"' OR richting='"+r4+"' OR richting='"+r5+"'");
			
			
			while (rs.next()) {
				Genodigden g = new Genodigden("","", "", "", "", "",""); 
				g.setId(rs.getString("id"));
				g.setNaam(rs.getString("naam"));
				g.setEmail(rs.getString("email"));
				g.setOrganisatie(rs.getString("organisatie"));
				g.setTelefoonnummer(rs.getString("telefoonnummer"));
				g.setContactpersoon(rs.getString("contactpersoon")); 
				gList.add(g);
			}
		} catch (SQLException ex) {
			System.out.println("Lijst genodigden ophalen gefaald.");
		}
		super.closeConnectRst();
		return gList;
	}
	
	
	
	/*
	 * 
	 * Toevoegen van genodigden aan de database
	 * @author rwijhe
	 * 
	 */
	
	public void genodigdeToevoegen(Genodigde g){
		String naam = g.getNaam();
		String organisatie = g.getOrganisatie();
		String mail = g.getEmail();
		String telNr = g.getTelefoonnummer();
		String cP = g.getContactpersoon();
		System.out.println(organisatie);
		
		
		String query = "INSERT INTO genodigden (naam, organisatie, email, telefoonnummer, contactpersoon, richting)";
		query += "VALUES('" + naam + "', '" + organisatie + "', '" + mail + "',   '" + telNr + "', '" + cP + "', 'NIEUW')";

		try {
			super.addUpdateRecord(query);
			super.closeConnectRst();

		} catch (Exception e) {

		}
	}
	
	/*
	 * 
	 * Lijst met alle genodigden ophalen die nog niet uitgenodigd zijn
	 * @author kevinwtenweerde
	 * 
	 */
	
	public ArrayList<Genodigden> listNotGenodigden(String eventIDs) {
		int eventID = Integer.parseInt(eventIDs);
		ArrayList<Genodigden> gList = new ArrayList<Genodigden>();
		try {
			super.makeConnection();
			
			ResultSet rs = super.makeResultSet("SELECT * FROM genodigden WHERE genodigden.email NOT IN(SELECT bezoek.email FROM genodigden INNER JOIN bezoek ON genodigden.email=bezoek.email AND bezoek.eventID="+eventID+") ");
			while (rs.next()) {
				Genodigden g = new Genodigden("","", "", "", "", "",""); 
				g.setId(rs.getString("id"));
				g.setNaam(rs.getString("naam"));
				g.setEmail(rs.getString("email"));
				g.setOrganisatie(rs.getString("organisatie"));
				g.setTelefoonnummer(rs.getString("telefoonnummer"));
				g.setContactpersoon(rs.getString("contactpersoon"));
				gList.add(g);
			}
		} catch (SQLException ex) {
			System.out.println("Lijst genodigden ophalen gefaald.");
		}
		super.closeConnectRst();
		return gList;
	}
}
